package com.authine.cloudpivot.ext.model.order;

import com.authine.cloudpivot.ext.enums.order.GoodsSrcEnum;
import com.authine.cloudpivot.ext.enums.order.OrderGoodsStatusEnum;
import com.authine.mvp.app.launcher.domain.SelectorFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;
import java.util.Map;

/**
 * @Author: liwei
 * @DateTime: 2021/9/18
 * @Description: TODO
 */
@Data
@Schema(description = "OrderCustomerGoodsVO")
@ApiModel("客户订单商品VO")
public class OrderCustomerGoodsVO {

    @ApiModelProperty(value = "id")
    private String id;
    @ApiModelProperty(value = "创建人")
    private String createdBy;
    @ApiModelProperty(value = "创建人部门")
    private String createdDept;
    @ApiModelProperty(value = "创建时间")
    private Date createdTime;
    @ApiModelProperty(value = "修改人")
    private String modifiedBy;
    @ApiModelProperty(value = "修改时间")
    private Date modifiedTime;
    @ApiModelProperty(value = "订单商品关系表ID")
    private String relation_id;
    @ApiModelProperty(value = "客户订单id")
    private String order_customer_id;
    @ApiModelProperty(value = "供应商订单id")
    private String order_vendor_id;
    @ApiModelProperty(value = "商品ID")
    private String goods_id;
    @ApiModelProperty(value = "商品来源")
    private GoodsSrcEnum goods_src;
    @ApiModelProperty(value = "下单时间")
    private Date place_order_time;
    @ApiModelProperty(value = "接单时间")
    private Date confirm_order_time;
    @ApiModelProperty(value = "分类")
    private String category;
    @ApiModelProperty(value = "品牌")
    private String brand;
    @ApiModelProperty(value = "商品名称")
    private String name;
    @ApiModelProperty(value = "型号")
    private String model;
    @ApiModelProperty(value = "规格")
    private String spec;
    @ApiModelProperty(value = "SKU")
    private String sku;
    @ApiModelProperty(value = "条形码")
    private String bar_code;
    @ApiModelProperty(value = "金税编码")
    private String golden_tax;
    @ApiModelProperty(value = "UNSPSC")
    private String unspsc;
    @ApiModelProperty(value = "图片")
    private String images;
    @ApiModelProperty(value = "技术参数")
    private String technical;
    @ApiModelProperty(value = "保修期")
    private String warranty;
    @ApiModelProperty(value = "包装参数")
    private String packaging;
    @ApiModelProperty(value = "描述")
    private String description;
    @ApiModelProperty(value = "货期")
    private Integer delivery;
    @ApiModelProperty(value = "长")
    private BigDecimal length;
    @ApiModelProperty(value = "宽")
    private BigDecimal width;
    @ApiModelProperty(value = "高")
    private BigDecimal height;
    @ApiModelProperty(value = "重")
    private BigDecimal weight;
    @ApiModelProperty(value = "包装数量")
    private BigDecimal package_quantity;
    @ApiModelProperty(value = "包装单位")
    private String package_unit;
    @ApiModelProperty(value = "数量")
    private BigDecimal quantity;
    @ApiModelProperty(value = "单位")
    private String unit;
    @ApiModelProperty(value = "税率")
    private BigDecimal tax_rate;
    @ApiModelProperty(value = "税前商品单价")
    private BigDecimal pretax_price;
    @ApiModelProperty(value = "税后商品单价")
    private BigDecimal price;
    @ApiModelProperty(value = "运费税率")
    private BigDecimal freight_rate;
    @ApiModelProperty(value = "运费")
    private BigDecimal freight;
    @ApiModelProperty(value = "税前商品合计")
    private BigDecimal pretax_total;
    @ApiModelProperty(value = "税额")
    private BigDecimal tax;
    @ApiModelProperty(value = "运费税额")
    private BigDecimal tax_freight;
    @ApiModelProperty(value = "税后商品合计")
    private BigDecimal total;
    @ApiModelProperty(value = "未税运费")
    private BigDecimal pretax_freight;
    @ApiModelProperty(value = "税前商品运费共计")
    private BigDecimal pretax_amount;
    @ApiModelProperty(value = "税后商品运费共计")
    private BigDecimal amount;
    @ApiModelProperty(value = "客户账期天数")
    private Integer customer_account_period;
    @ApiModelProperty(value = "供应商账期天数")
    private Integer vendor_account_period;
    @ApiModelProperty(value = "客户下单备注")
    private String memo;
    @ApiModelProperty(value = "外部来源订单商品ID")
    private String client_order_goods_id;
    @ApiModelProperty(value = "外部来源供应商订单商品ID")
    private String client_order_vendor_goods_id;
    @ApiModelProperty(value = "收货单附件")
    private String attachment;
    @ApiModelProperty(value = "实际交付日期（上传收货单时间）")
    private Date actual_deliver_time;
    @ApiModelProperty(value = "下单人用户ID")
    private SelectorFormat place_order_user_id;
    @ApiModelProperty(value = "下单人名称")
    private String place_order_fullname;
    @ApiModelProperty(value = "客户组织id")
    private SelectorFormat customer_organization_id;
    @ApiModelProperty(value = "客户组织名称")
    private String customer_organization_name;
    @ApiModelProperty(value = "供应商组织id")
    private SelectorFormat vendor_organization_id;
    @ApiModelProperty(value = "供应商组织名称")
    private String vendor_organization_name;
    @ApiModelProperty(value = "商品拆分")
    private String split_goods;
    @ApiModelProperty(value = "扩展属性")
    private String extends_attr;
    @ApiModelProperty(value = "成本中心")
    private String cost_center_name;
    @ApiModelProperty(value = "已发货数量")
    private BigDecimal quantity_shipped;
    @ApiModelProperty(value = "已收货数量")
    private BigDecimal quantity_received;
    @ApiModelProperty(value = "已退未发数量")
    private BigDecimal quantity_return_not_shipped;
    @ApiModelProperty(value = "已退已发数量")
    private BigDecimal quantity_return_shipped;
    @ApiModelProperty(value = "收货时间")
    private Date delivery_time;
    @ApiModelProperty(value = "接单加货期时间")
    private Date remind_time;
    @ApiModelProperty(value = "老状态")
    private String old_status;
    @ApiModelProperty(value = "仅退货数量")
    private BigDecimal returned_num;
    @ApiModelProperty(value = "退的收货部分的数量")
    private BigDecimal return_received_num;
    @ApiModelProperty(value = "退给平台的收货部分的数量")
    private BigDecimal return_pm_received_num;
    @ApiModelProperty(value = "收货人")
    private String receiver;
    @ApiModelProperty(value = "电话")
    private String phone;
    @ApiModelProperty(value = "详细地址")
    private String address;
    @ApiModelProperty(value = "邮编")
    private String postal;
    @ApiModelProperty(value = "外部来源订单ID")
    private String client_order_id;
    @ApiModelProperty(value = "ERP PO")
    private String erp_po;
    @ApiModelProperty(value = "客户订单商品状态")
    private OrderGoodsStatusEnum order_customer_goods_status;
    @ApiModelProperty(value = "数量/单位")
    private String quantity_unit;
    @ApiModelProperty(value = "包装数量/单位")
    private String package_quantity_unit;
    @ApiModelProperty(value = "未发货数量")
    private BigDecimal undelivered_quantity;
    @ApiModelProperty(value = "已签收数量")
    private BigDecimal signed_quantity;
    @ApiModelProperty(value = "erpPo行号（erp系统中以po行号确认物料）")
    private String erp_po_line_number;
    @ApiModelProperty(value = "送货要求")
    private String delivery_requirements;
    @ApiModelProperty(value = "发货数量/单位")
    private String delivery_quantity_units;
    @ApiModelProperty(value = "物流名称")
    private String logistics;
    @ApiModelProperty(value = "物流单号")
    private String waybill;
    @ApiModelProperty(value = "可退数量")
    private BigDecimal quantity_returnable;
    @ApiModelProperty(value = "供应商订单状态")
    private String order_vendor_status;
    @ApiModelProperty(value = "退货商品状态")
    private String order_goods_returns_status;
    @ApiModelProperty(value = "需求部门")
    private String demand_department_name;
    @ApiModelProperty(value = "询价人单号")
    private String inquiry_id;
    @ApiModelProperty(value = "订单来源")
    private String source;
    @ApiModelProperty(value = "询价人名称")
    private String inquiry_member_name;
    @ApiModelProperty(value = "购物车源类型")
    private String cart_src;
    @ApiModelProperty(value = "延期原因")
    private String delay_reason;


    //冗余部分 关系表数据 需要赋值
    @ApiModelProperty(value = "区域")
    private String region;
    @ApiModelProperty(value = "公司")
    private String company;
    @ApiModelProperty(value = "仓库")
    private String warehouse;

    @ApiModelProperty(value = "供应商订单")
    private OrderVendorVO orderVendorVO;

    public static Map<String, Object> transferMap(OrderCustomerGoodsVO orderCustomerGoodsVO) {
        return null;
    }
}
